<?php

// 测试
$ins1 = Singleton::getInstance();
$ins2 = Singleton::getInstance();
if ($ins1 === $ins2) {
    echo '这是同一个对象';
} else {
    echo '这不是同一个对象';
}

// 单例（单一实例）
// 这个类只能创建一个对象
// php 的应用主要在于数据库应用，一个应用中会存在大量的数据库操作，使用单例模式，
// 可以避免大量的 new 操作消耗的资源
// 步骤
//  1、保存类实例的静态成员变量
//  2、构造函数需要标记为 private
//  3、获取实例的公共的静态方法

// 单例模式
class Singleton
{
    // 静态属性保存单例对象
    static private $instance;

    // 构造函数私有化
    private function __construct()
    {
        
    }

    // 通过静态方法来创建实例对象
    static public function getInstance()
    {
        if (!self::$instance) {
            self::$instance = new self();
        }

        return self::$instance;
    }
}